// 服务事项相关API接口
const { request } = require('../utils/request');

/**
 * 获取服务事项列表
 * @param {object} params 查询参数
 * @param {string} params.category_id 分类ID（可选）
 * @param {string} params.keywords 搜索关键词（可选）
 * @param {boolean} params.is_online 是否在线办理（可选）
 * @param {boolean} params.is_appointment 是否可预约（可选）
 * @param {string} params.status 服务状态（可选，默认active）
 * @param {number} params.page 页码（可选，默认1）
 * @param {number} params.limit 每页数量（可选，默认50）
 */
function getServiceItems(params = {}) {
  return request('/api/service-items/items', {
    method: 'GET',
    data: params
  })
}

/**
 * 获取服务分类列表
 * @param {object} params 查询参数
 * @param {string} params.status 分类状态（可选，默认active）
 * @param {boolean} params.include_stats 是否包含统计信息（可选，默认false）
 */
function getServiceCategories(params = {}) {
  return request('/api/service-items/categories', {
    method: 'GET',
    data: params
  })
}

/**
 * 获取单个服务事项详情
 * @param {string} id 服务事项ID
 */
function getServiceItemDetail(id) {
  return request(`/api/service-items/items/${id}`, {
    method: 'GET'
  })
}

/**
 * 获取单个服务分类详情
 * @param {string} id 服务分类ID
 */
function getServiceCategoryDetail(id) {
  return request(`/api/service-items/categories/${id}`, {
    method: 'GET'
  })
}

/**
 * 搜索服务事项
 * @param {string} keyword 搜索关键词
 * @param {object} options 其他选项
 * @param {string} options.category_id 分类ID（可选）
 * @param {boolean} options.is_online 是否在线办理（可选）
 * @param {boolean} options.is_appointment 是否可预约（可选）
 * @param {string} options.status 服务状态（可选，默认active）
 * @param {number} options.page 页码（可选，默认1）
 * @param {number} options.limit 每页数量（可选，默认20）
 */
function searchServiceItems(keyword, options = {}) {
  const params = {
    keyword: keyword.trim(),
    ...options
  }
  return request('/api/service-items/search', {
    method: 'GET',
    data: params
  })
}

/**
 * 按分类获取服务事项
 * @param {string} categoryId 分类ID
 * @param {object} options 其他选项
 * @param {boolean} options.is_online 是否在线办理
 * @param {boolean} options.is_appointment 是否可预约
 * @param {number} options.page 页码
 * @param {number} options.limit 每页数量
 */
function getServiceItemsByCategory(categoryId, options = {}) {
  const params = {
    category_id: categoryId,
    ...options
  }
  return getServiceItems(params)
}

/**
 * 获取在线办理的服务事项
 * @param {object} options 其他选项
 * @param {string} options.category_id 分类ID（可选）
 * @param {string} options.keywords 搜索关键词（可选）
 * @param {number} options.page 页码
 * @param {number} options.limit 每页数量
 */
function getOnlineServiceItems(options = {}) {
  const params = {
    is_online: true,
    ...options
  }
  return getServiceItems(params)
}

/**
 * 获取可预约的服务事项
 * @param {object} options 其他选项
 * @param {string} options.category_id 分类ID（可选）
 * @param {string} options.keywords 搜索关键词（可选）
 * @param {number} options.page 页码
 * @param {number} options.limit 每页数量
 */
function getAppointmentServiceItems(options = {}) {
  const params = {
    is_appointment: true,
    ...options
  }
  return getServiceItems(params)
}

/**
 * 添加收藏
 * @param {string} serviceItemId 服务事项ID
 * @param {number} userId 用户ID
 */
function addFavorite(serviceItemId, userId) {
  return request('/api/service-items/favorites', {
    method: 'POST',
    data: {
      service_item_id: serviceItemId,
      user_id: userId
    }
  })
}

/**
 * 取消收藏
 * @param {string} serviceItemId 服务事项ID
 * @param {number} userId 用户ID
 */
function removeFavorite(serviceItemId, userId) {
  return request('/api/service-items/favorites', {
    method: 'DELETE',
    data: {
      service_item_id: serviceItemId,
      user_id: userId
    }
  })
}

/**
 * 获取用户收藏列表
 * @param {number} userId 用户ID
 * @param {object} params 查询参数
 * @param {string} params.category_id 分类ID（可选）
 * @param {string} params.status 收藏状态（可选，默认active）
 * @param {number} params.page 页码（可选，默认1）
 * @param {number} params.limit 每页数量（可选，默认50）
 */
function getUserFavorites(userId, params = {}) {
  return request('/api/service-items/favorites', {
    method: 'GET',
    data: {
      user_id: userId,
      ...params
    }
  })
}

/**
 * 获取用户收藏总数
 * @param {number} userId 用户ID
 * @param {object} params 查询参数
 * @param {string} params.status 收藏状态（可选，默认active）
 */
function getUserFavoritesCount(userId, params = {}) {
  return request('/api/service-items/favorites/count', {
    method: 'GET',
    data: {
      user_id: userId,
      ...params
    }
  })
}


module.exports = {
  getServiceItems,
  getServiceCategories,
  getServiceItemDetail,
  getServiceCategoryDetail,
  searchServiceItems,
  getServiceItemsByCategory,
  getOnlineServiceItems,
  getAppointmentServiceItems,
  addFavorite,
  removeFavorite,
  getUserFavorites,
  getUserFavoritesCount
}
